return ret;
}
-static __inline__ long HYPERVISOR_set_dom_timer(void *timer_arg)
+static __inline__ long HYPERVISOR_set_timer_op(void *timer_arg)
{
int ret;
__asm__ __volatile__ (
TRAP_INSTR
- : "=a" (ret) : "0" (__HYPERVISOR_set_dom_timer),
+ : "=a" (ret) : "0" (__HYPERVISOR_set_timer_op),
"b" (timer_arg) : "memory" );
return ret;
.data
ENTRY(hypervisor_call_table)
- .long SYMBOL_NAME(do_set_trap_table)
+ .long SYMBOL_NAME(do_set_trap_table) /* 0 */
.long SYMBOL_NAME(do_mmu_update)
.long SYMBOL_NAME(do_console_write)
.long SYMBOL_NAME(do_set_gdt)
.long SYMBOL_NAME(do_stack_switch)
- .long SYMBOL_NAME(do_set_callbacks)
+ .long SYMBOL_NAME(do_set_callbacks) /* 5 */
.long SYMBOL_NAME(do_net_io_op)
.long SYMBOL_NAME(do_fpu_taskswitch)
.long SYMBOL_NAME(do_sched_op)
- .long SYMBOL_NAME(do_set_timer_op)
.long SYMBOL_NAME(do_dom0_op)
- .long SYMBOL_NAME(do_network_op)
+ .long SYMBOL_NAME(do_network_op) /* 10 */
.long SYMBOL_NAME(do_block_io_op)
.long SYMBOL_NAME(do_set_debugreg)
.long SYMBOL_NAME(do_get_debugreg)
.long SYMBOL_NAME(do_update_descriptor)
- .long SYMBOL_NAME(do_set_fast_trap)
+ .long SYMBOL_NAME(do_set_fast_trap) /* 15 */
.long SYMBOL_NAME(do_dom_mem_op)
.long SYMBOL_NAME(do_multicall)
.long SYMBOL_NAME(do_kbd_op)
.long SYMBOL_NAME(do_update_va_mapping)
+ .long SYMBOL_NAME(do_set_timer_op) /* 20 */
.long SYMBOL_NAME(do_event_channel_op)
+ .long SYMBOL_NAME(do_xen_version)
.rept NR_syscalls-((.-hypervisor_call_table)/4)
- .long SYMBOL_NAME(sys_ni_syscall)
+ .long SYMBOL_NAME(do_ni_syscall)
.endr
}
+/*********************************
+ * Various console code follows...
+ */
+
/* VGA text (mode 3) definitions. */
#define COLUMNS 80
#define LINES 25
}
-void panic(const char *fmt, ...)
-{
- va_list args;
- char buf[128];
- unsigned long flags;
- extern void machine_restart(char *);
-
- va_start(args, fmt);
- (void)vsnprintf(buf, sizeof(buf), fmt, args);
- va_end(args);
-
- /* Spit out multiline message in one go. */
- spin_lock_irqsave(&console_lock, flags);
- __putstr("\n****************************************\n");
- __putstr(buf);
- __putstr("Aieee! CPU");
- sprintf(buf, "%d", smp_processor_id());
- __putstr(buf);
- __putstr(" is toast...\n");
- __putstr("****************************************\n\n");
- __putstr("Reboot in five seconds...\n");
- spin_unlock_irqrestore(&console_lock, flags);
-
- mdelay(5000);
- machine_restart(0);
-}
-
-
-/* No-op syscall. */
-asmlinkage long sys_ni_syscall(void)
-{
- return -ENOSYS;
-}
-
-
unsigned short compute_cksum(unsigned short *buf, int count)
{
unsigned long sum = 0;
}
+/*********************************
+ * Debugging/tracing/error-report.
+ */
+
+void panic(const char *fmt, ...)
+{
+ va_list args;
+ char buf[128];
+ unsigned long flags;
+ extern void machine_restart(char *);
+
+ va_start(args, fmt);
+ (void)vsnprintf(buf, sizeof(buf), fmt, args);
+ va_end(args);
+
+ /* Spit out multiline message in one go. */
+ spin_lock_irqsave(&console_lock, flags);
+ __putstr("\n****************************************\n");
+ __putstr(buf);
+ __putstr("Aieee! CPU");
+ sprintf(buf, "%d", smp_processor_id());
+ __putstr(buf);
+ __putstr(" is toast...\n");
+ __putstr("****************************************\n\n");
+ __putstr("Reboot in five seconds...\n");
+ spin_unlock_irqrestore(&console_lock, flags);
+
+ mdelay(5000);
+ machine_restart(0);
+}
+
+
void __out_of_line_bug(int line)
{
printk("kernel BUG in header file at line %d\n", line);
}
+/*********************************
+ * Simple syscalls.
+ */
+
+long do_xen_version(int cmd)
+{
+ if ( cmd != 0 )
+ return -ENOSYS;
+ return (XEN_VERSION<<16) | (XEN_SUBVERSION);
+}
+
+long do_ni_syscall(void)
+{
+ /* No-op syscall. */
+ return -ENOSYS;
+}
+
+
/*
* GRAVEYARD
*/
#define __HYPERVISOR_net_io_op 6
#define __HYPERVISOR_fpu_taskswitch 7
#define __HYPERVISOR_sched_op 8
-#define __HYPERVISOR_set_dom_timer 9
-#define __HYPERVISOR_dom0_op 10
-#define __HYPERVISOR_network_op 11
-#define __HYPERVISOR_block_io_op 12
-#define __HYPERVISOR_set_debugreg 13
-#define __HYPERVISOR_get_debugreg 14
-#define __HYPERVISOR_update_descriptor 15
-#define __HYPERVISOR_set_fast_trap 16
-#define __HYPERVISOR_dom_mem_op 17
-#define __HYPERVISOR_multicall 18
-#define __HYPERVISOR_kbd_op 19
-#define __HYPERVISOR_update_va_mapping 20
+#define __HYPERVISOR_dom0_op 9
+#define __HYPERVISOR_network_op 10
+#define __HYPERVISOR_block_io_op 11
+#define __HYPERVISOR_set_debugreg 12
+#define __HYPERVISOR_get_debugreg 13
+#define __HYPERVISOR_update_descriptor 14
+#define __HYPERVISOR_set_fast_trap 15
+#define __HYPERVISOR_dom_mem_op 16
+#define __HYPERVISOR_multicall 17
+#define __HYPERVISOR_kbd_op 18
+#define __HYPERVISOR_update_va_mapping 19
+#define __HYPERVISOR_set_timer_op 20
#define __HYPERVISOR_event_channel_op 21
+#define __HYPERVISOR_xen_version 22
/* And the trap vector is... */
#define TRAP_INSTR "int $0x82"
alarm = __jiffies_to_st(timer->expires);
/* Failure is pretty bad, but we'd best soldier on. */
- if ( HYPERVISOR_set_dom_timer(alarm) != 0 )
+ if ( HYPERVISOR_set_timer_op(alarm) != 0 )
ret = -1;
spin_unlock(&timerlist_lock);
return ret;
}
-static inline long HYPERVISOR_set_dom_timer(u64 timeout)
+static inline long HYPERVISOR_set_timer_op(u64 timeout)
{
int ret;
unsigned long timeout_hi = (unsigned long)(timeout>>32);
unsigned long timeout_lo = (unsigned long)timeout;
__asm__ __volatile__ (
TRAP_INSTR
- : "=a" (ret) : "0" (__HYPERVISOR_set_dom_timer),
+ : "=a" (ret) : "0" (__HYPERVISOR_set_timer_op),
"b" (timeout_hi), "c" (timeout_lo) : "memory" );
return ret;
return ret;
}
+static inline int HYPERVISOR_xen_version(int cmd)
+{
+ int ret;
+ __asm__ __volatile__ (
+ TRAP_INSTR
+ : "=a" (ret) : "0" (__HYPERVISOR_xen_version),
+ "b" (cmd) : "memory" );
+
+ return ret;
+}
+
#endif /* __HYPERVISOR_H__ */